package com.maxio.controller;

import cn.dev33.satoken.annotation.SaCheckRole;
import com.maxio.domain.R;
import com.maxio.domain.dto.ClassDTO.ClassAddDTO;
import com.maxio.domain.dto.ClassDTO.ClassEditDTO;
import com.maxio.domain.query.ClassQuery;
import com.maxio.service.IClassService;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 班级表 前端控制器
 * </p>
 *
 * @author enhuan
 * @since 2024-05-28
 */
@Slf4j
@RestController
@RequestMapping("/class")
public class ClassController {

    @Autowired
    private IClassService classService;

    /**
     * 新增班级信息
     */
    @ApiOperation(value = "新增班级信息")
    @PostMapping("/save")
    public R<?> saveClass(@RequestBody ClassAddDTO addDTO) {
        return R.ok(classService.saveClass(addDTO));
    }

    /**
     * 单个查询班级信息
     */
    @ApiOperation(value = "单个查询班级信息")
    @GetMapping("/selectById/{id}")
    public R<?> selectClassById(@PathVariable Long id) {
        return R.ok(classService.selectById(id));
    }

    /**
     * 修改当前班级信息
     */
    @ApiOperation(value = "修改当前班级信息")
    @PutMapping("/update")
    public R<?> updateClassById(@RequestBody ClassEditDTO editDTO) {
        return R.ok(classService.updateClassById(editDTO));
    }

    /**
     * 单个删除班级信息
     */
    @ApiOperation(value = "单个删除班级信息")
    @DeleteMapping("/delete/{id}")
    public R<?> deleteClassById(@PathVariable Long id) {
        return R.ok(classService.deleteById(id));
    }

    /**
     * 分页查询班级信息
     */
    @SaCheckRole("ADMIN")
    @ApiOperation(value = "分页查询班级信息")
    @GetMapping("/selectPage")
    public R<?> selectClassPage(ClassQuery userQuery) {
        return R.ok(classService.selectPage(userQuery));
    }

    /**
     * 获取ID和Name集合
     */
    @ApiOperation(value = "获取班主任ID和Name集合")
    @GetMapping("/selectIdAndName")
    public R<?> selectEmpIdAndName() {
        return R.ok(classService.selectIdAndName());
    }



}
